package Modelo;

import java.util.Date;
import java.util.Set;

import javax.persistence.*;

@Entity
public class Titular {
	private Long id;
	private String tipoDocumento;
	private int numeroDocumento;
	private String nombre;
	private String apellido;
	private Date fechaNacimiento;
	private boolean esDonante;
	private String observaciones;
	private Domicilio domicilio;
	private GrupoSanguineo grupoSanguineo;
	private ClaseDeLicencia claseDeLicencia;
	private Set<LicenciaVigente> listaLicenciasVigentes;
	private Set<LicenciaExpirada> listaLicenciasExpiradas;

	
	@Id
	@GeneratedValue
	@Column(name = "id_titular")
	public Long getId() {
		return id;
	}
	
	public void setId(Long id) {
		this.id = id;
	}
	@Basic
	@Column(name = "tipo_documento")
	public String getTipoDocumento() {
		return tipoDocumento;
	}
	public void setTipoDocumento(String tipoDocumento) {
		this.tipoDocumento = tipoDocumento;
	}
	@Basic
	@Column(name = "numero_documento")
	public int getNumeroDocumento() {
		return numeroDocumento;
	}
	public void setNumeroDocumento(int numeroDocumento) {
		this.numeroDocumento = numeroDocumento;
	}
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getApellido() {
		return apellido;
	}
	public void setApellido(String apellido) {
		this.apellido = apellido;
	}
	@Basic
	@Column(name = "fecha_nacimiento")
	public Date getFechaNacimiento() {
		return fechaNacimiento;
	}
	public void setFechaNacimiento(Date fechaNacimiento) {
		this.fechaNacimiento = fechaNacimiento;
	}
	@Basic
	@Column(name = "es_donante")
	public boolean isEsDonante() {
		return esDonante;
	}
	public void setEsDonante(boolean esDonante) {
		this.esDonante = esDonante;
	}
	public String getObservaciones() {
		return observaciones;
	}
	public void setObservaciones(String observaciones) {
		this.observaciones = observaciones;
	}
	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "id_domicilio")
	public Domicilio getDomicilio() {
		return domicilio;
	}

	public void setDomicilio(Domicilio domicilio) {
		this.domicilio = domicilio;
	}
	
	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "id_grupo_sanguineo")
	public GrupoSanguineo getGrupoSanguineo() {
		return grupoSanguineo;
	}

	public void setGrupoSanguineo(GrupoSanguineo grupoSanguineo) {
		this.grupoSanguineo = grupoSanguineo;
	}
	
	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "id_clase_solicitada")
	public ClaseDeLicencia getClaseDeLicencia() {
		return claseDeLicencia;
	}

	public void setClaseDeLicencia(ClaseDeLicencia claseDeLicencia) {
		this.claseDeLicencia = claseDeLicencia;
	}
	
	@OneToMany(mappedBy="titular")
	public Set<LicenciaVigente> getListaLicenciasVigentes() {
		return listaLicenciasVigentes;
	}

	public void setListaLicenciasVigentes(
			Set<LicenciaVigente> listaLicenciasVigentes) {
		this.listaLicenciasVigentes = listaLicenciasVigentes;
	}
	
	@OneToMany(mappedBy="titular")
	public Set<LicenciaExpirada> getListaLicenciasExpiradas() {
		return listaLicenciasExpiradas;
	}

	public void setListaLicenciasExpiradas(
			Set<LicenciaExpirada> listaLicenciasExpiradas) {
		this.listaLicenciasExpiradas = listaLicenciasExpiradas;
	}
	
	
}
